table of contents
PROCMAILRC(5) | File Formats Manual | PROCMAILRC(5) |
NAZWA¶
procmailrc - plik rc procmaila
SKŁADNIA¶
$HOME/.procmailrc
OPIS¶
Dla szybkiego startu obejrzyj sekcję UWAGI na końcu strony podręcznika procmail(1).
Plik rc składa się z przypisań zmiennych środowiskowych (niektóre z nich mają specjalne znaczenie dla procmaila) i reguł. W najprostszej postaci, reguły są po prostu jednoliniowymi wyrażeniami regularnymi, które są poszukiwane w nagłówkach przychodzącej poczty; pierwsza reguła, która zostanie dopasowana jest używana do określenia gdzie dany list ma pójść (zwykle do pliku). Jeśli przetwarzanie dojdzie do końca pliku rc, procmail dostarczy pocztę do $DEFAULT.
Istnieją dwa rodzaje reguł: dostarczające i niedostarczające. Jeśli dopasowana zostanie reguła dostarczająca, procmail zakłada, że poczta (zgadłeś) jest dostarczona i zakończy przetwarzanie pliku rc po wykonaniu linii akcji reguły. Jeśli dopasowana zostanie reguła niedostarczająca, to przetwarzanie pliku rc będzie kontynuowane nawet po wykonaniu akcji tej reguły.
Reguły dostarczające są tymi, które powodują zapis nagłówka lub ciała listu do pliku, jego zaabsorbowanie przez program lub przeforwardowanie do innego adresu pocztowego.
Reguły niedostarczające to te, które łapią wyjście programu lub filtru z powrotem do procmaila, lub te, które rozpoczynają zagnieżdżony blok.
Można powiedzieć procmailowi by traktował regułę dostarczającą jako niedostarczającą poprzez przekazanie takiej regule flagi `c'. Spowoduje to, że procmail wygeneruje kopię listu typu carboncopy, tj. dostarczając go regule i dalej przetwarzając plik rc.
Używając dowolnej ilości reguł, możesz posortować swoją pocztę wprost do określonych folderów pocztowych. Pamiętaj jednak, że poczta może wpływać do tych folderów w tym samym momencie (jeśli kilka procmaili działa naraz, co nie jest nieprawdopodobne przy dużej ilości poczty). Aby upewnić się, że nie narobi to bałaganu, zalecane jest robienie właściwego użytku z plików blokujących.
Inicjalizacje zmiennych środowiskowych i reguły mogą być swobodnie przeplatane w pliku rc. Jeśli zmienna środowiskowa ma dla procmaila specjalne znaczenie, zostanie użyta odpowiednio w momencie przetwarzania. (np. możesz zmienić katalog bieżący kiedy tylko chcesz przez podanie nowego MAILDIR, zamienić pliki blokujące przez podanie nowego LOCKFILE, zmienić umask, itd., możliwości jest nieskończenie wiele :-).
Inicjalizacje i podstawienia tych zmiennych środowiskowych są obsługiwane dokładnie jak w sh(1) (to włącza wszystkie możliwe cytaty i sekwencje specjalne), z dodatkową premią, że puste miejsca dookoła '=' są ignorowane i tym, że jeśli zmienna pojawi się bez '=' na końcu, to zostanie usunięta ze środowiska. Każdy program w odwrotnych apostrofach, uruchomiony przez procmail będzie miał cały list na swoim stdin.
Komentarze¶
Słowo zaczynające się od # i wszystkie podążające za nim znaki, aż do nowej linii są ignorowane. Nie tyczy się to linii warunkowych, które nie mogą być komentowane.
Reguły¶
Linia zaczynająca się od ':' oznacza początek reguły. Ma następujący format:
:0 [flagi] [ : [lokalnyplikblokujący] ] <zero lub więcej warunków (jeden na linię)> <dokładnie jedna linia akcji>
Warunki zaczynają się od `*' i wszystko co następuje po tym znaku jest przekazywane wewnętrznemu egrepowi, poza początkowymi i końcowymi białymi spacjami. Wyrażenia regularne są całkowicie kompatybilne z normalnymi wyrażeniami regularnymi egrep(1). Zobacz także Rozszerzone wyrażenia regularne.
Warunki są logicznie koniugowane; jeżeli nie ma warunków, wynik jest domyślnie prawdziwy.
Flagi mogą być dowolnymi z
następujących:
- H
- Egrepuj nagłówek (domyślnie).
- B
- Egrepuj ciało.
- D
- Powiedz wewnętrznemu egrepowi aby rozróżniał
duże i małe litery (w przeciwieństwie do
właściwości domyślnej).
- A
- Ta reguła będzie zależeć od ostatniej
poprzedzającej reguły (na bieżącym poziomie
zagnieżdżenia) bez flagi `A' lub `a'. Umożliwia to
wiązanie akcji zależących od wspólnego
warunku.
- a
- Ma takie samo znaczenie jak flaga `A', lecz zależy także od
pomyślnego zakończenia poprzedzającej
reguły.
- E
- Ta reguła jest wykonywana tylko jeśli bezpośrednio
poprzedzająca reguła nie była wykonana. Wykonanie tej
reguły wyłącza także wszelkie
bezpośrednio następujące reguły z flagą
'E'. Umożliwia to stawianie akcji `else if'.
- e
- Ta reguła jest wykonywana tylko jeśli bezpośrednio
poprzedzająca reguła się nie powiodła.
Umożliwia to określanie akcji na błędy.
- h
- Prześlij nagłówek listu do potoku (domyślne).
- b
- Prześlij ciało listu do potoku (domyślne).
- f
- Załóż, że potok jest filtrem.
- c
- Wygeneruj kopię carbon copy tego listu. Ma to tylko sens dla
reguł dostarczających Jedyną
niedostarczającą regułą, na której
flaga ta ma jakiś skutek jest wypadek zagnieżdżonego
bloku, w celu wygenerowania kopii carbon copy proces procmaila zostanie
sklonowany (pliki blokujące nie zostaną
odziedziczone), podczas gdy klon będzie pracować jak zwykle,
rodzic przeskoczy blok.
- w
- Czekaj na zakończenie filtru lub programu i sprawdź kod
wyjścia (normalnie ignorowany); jeśli filtr
zwrócił błąd, tekst nie będzie
filtrowany.
- W
- Ma takie samo znaczenie jak flaga `w', lecz powstrzyma wszelkie informacje
typu `Program failure'.
- i
- Ignoruj wszelkie błędy zapisu na tej regule (np. zwykle
przez wcześnie zamknięty potok).
- r
- Tryb surowy: nie próbuj zapewnić, że list kończy się pustą linią, zapisz go jakim jest.
Istnieją pewne warunki specjalne, których
możesz użyć, a które nie są w
pełni regularnymi wyrażeniami. Aby wybrać je, warunek
musi zaczynać się od:
- !
- Odwróć warunek.
- $
- Oszacuj resztę według reguł podstawiania sh(1)
wewnątrz podwójnych cudzysłowów, pomiń
początkowe białe spacje i przetwórz ponownie.
- ?
- Użyj kodu wyjścia podanego programu.
- <
- Sprawdź czy całkowita długość listu
jest krótsza niż podana (dziesiętnie)
ilość bajtów.
- >
- Analogiczne do '<'.
- zmienna ??
- Porównaj resztę z wartością tej zmiennej
środowiskowej (nie może to być pseudozmienna).
Specjalnymi wypadkami są `B', `H', `HB' i `BH', które
zwyczajnie przeciążają domyślny obszar
przeszukiwania nagłówka/ciała (header/body)
zdefiniowanego dla tej reguły.
- \
- Aby zacytować dowolny z powyższych znaków na
początku linii.
Lokalny plik blokujący¶
Jeśli umieścisz drugi (kończący) ':' w pierwszej linii reguły, to procmail użyje lokalnego pliku blokującego (locallockfile) (tylko dla tej reguły). Opcjonalnie możesz podać jakiego pliku użyć; jednak jeśli tego nie uczynisz, procmail użyje nazwy pliku celu (lub nazwy pliku następującej po pierwszym '>>') i dopisze do niej $LOCKEXT.
Linia akcji reguły¶
Linia akcji może zaczynać się od
następujących znaków:
- !
- Forwarduje do podanych adresów pocztowych.
- |
- Uruchamia określony program, prawdopodobnie w $SHELL-u,
jeśli wykryto jakiś ze znaków $SHELLMETAS.
Możesz opcjonalnie poprzedzić ten symbol potoku znakiem
variable=, który spowoduje, że stdout programu
zostanie przechwycony do zmiennej środowiskowej variable.
Jeśli podasz tylko symbol potoku, bez żadnego programu, to
procmail wrzuci list na stdout.
- {
- Jeśli następuje za tym przynajmniej jedna spacja, tabulacja, lub nowa linia, to oznacza to początek zagnieżdżonego bloku. Wszystko, aż do następnego nawiasu zamykającego, będzie zależeć od warunków podanych dla tej reguły. Dozwolone jest nieograniczone zagnieżdżanie. Nawias zamykający istnieje zwyczajnie po to, by oddzielić blok; w żadnym wypadku nie wywoła zakończenia procmaila. Po dotarciu do końca bloku, przetwarzanie będzie kontynuowane, jak zwykle, po tym bloku. W bloku zagnieżdżonym flagi `H' i `B' dotyczą tylko warunków prowadzących do tego bloku, flagi `h' i `b' nie działają tak czy inaczej.
Wszystko inne będzie uznawane za nazwę mailboxa (zarówno nazwę pliku lub katalog--absolutny lub względny do bieżącego katalogu (zobacz MAILDIR)). Jeśli jest to (możliwe że jeszcze nie istniejąca) nazwa pliku, poczta zostanie do niego doklejona.
Jeśli jest to katalog, poczta zostanie dostarczona do nowo
utworzonego, unikalnego pliku o nazwie $MSGPREFIX* w podanym katalogu.
Jeśli nazwa katalogu kończy się "/.", to
katalog ten jest uznawany za folder MH; procmail użyje
następnego numeru, który będzie dostępny. Gdy
procmail dostarcza do katalogów, możesz podać wiele
katalogów, do których należy dostarczyć (przy
użyciu twardych dowiązań).
Domyślne wartości zmiennych środowiskowych¶
- LOGNAME, HOME i SHELL
- Twoje (odbiorcy) wartości domyślne
- SHELLMETAS
- & |<>~;?*[
- SHELLFLAGS
- -c
- ORGMAIL
- /var/spool/mail/$LOGNAME
(Chyba, że podano -m, wtedy opcja ta jest nieustawiona)
- MAILDIR
- $HOME/
(Chyba, że nazwa pierwszego pomyślnie otwartego pliku rc zaczyna się od ./, w którym wypadku wartością domyślną jest `.')
- DEFAULT
- $ORGMAIL
- MSGPREFIX
- msg.
- SENDMAIL
- /usr/sbin/sendmail
- HOST
- Bieżąca nazwa hosta
- COMSAT
- no
(Jeśli plik rc jest podany w linii komend)
- LOCKEXT
- .lock
Inne czyszczone lub preustawiane zmienne środowiskowe to
IFS, ENV, PWD, PATH=$HOME/bin :/bin :/usr/bin :/sbin :/usr/sbin
:/usr/local/bin :/usr/local/sbin :/usr/bin/X11 and USER=$LOGNAME.
Środowisko¶
Zanim zgubisz się w mętliku zmiennych
środowiskowych, pamiętaj że wszystkie one mają
sensowne wartości domyślne.
- MAILDIR
- Bieżący katalog w momencie gdy procmail jest uruchomiany
(znaczy to, że wszystkie ścieżki są relatywne
do $MAILDIR).
- DEFAULT
- Domyślny plik mailbox (jeśli nie powiedziano inaczej,
procmail wrzuci pocztę do tego mailboxa). Procmail automatycznie
użyje $DEFAULT$LOCKEXT jako pliku blokującego przed
zapisaniem czegoś do tego mailboxa. Nie musisz ustawiać tej
zmiennej, ponieważ standardowo wskazuje ona na standardowy mailbox
systemu.
- LOGFILE
- Plik ten będzie zawierał wszelkie komunikaty diagnostyczne i
komunikaty o błędach od procmaila, lub od innych
programów uruchomionych przez procmaila. Jeśli plik ten nie
jest podany, komunikaty będą przesyłane do
wysyłającego. Zobacz także LOGABSTRACT.
- VERBOSE
- Ustawiając tę zmienną na `yes' lub `on',
możesz włączyć rozszerzoną
diagnostykę, wyłączyć zaś
można ją przez ustawienie jej na `no' lub `off'.
- LOGABSTRACT
- Zanim procmail zakończy, raportuje dostarczoną
wiadomość w $LOGFILE, pokazując pola `From ' i
`Subject: ' nagłówka, folder do którego poszła
wiadomość, oraz jej długość (w
bajtach). Ustawienie tej zmiennej na `no' powstrzymuje generowanie tych
informacji. Jeśli ustawisz ją na `all', procmail
będzie logował każdą pomyślnie
zakończoną regułę dostarczenia,
którą przetworzy.
- LOG
- Wartość przyznana tej zmiennej będzie dodana do
$LOGFILE.
- ORGMAIL
- Zazwyczaj mailbox systemowy (ORiGinal MAILbox).
Jeśli z jakiegoś powodu (jak przepełnienie systemu
plików), list nie mógł być dostarczony do tego
mailboxa, to procmail dostarczy go tutaj. Jeśli jednak nie
będzie mógł nawet tego uczynić, to list
zostanie odbity do wysyłającego.
- LOCKFILE
- Globalny plik semaforowy. Jeśli plik ten już istnieje,
procmail będzie czekał aż zniknie i utworzy go
samodzielnie (i wyczyści gdy skończy). Jeśli podano
więcej niż jeden plik blokujący, to poprzedni
zostanie usunięty przed próbą utworzenia nowego.
Używanie globalnego pliku blokującego jest złą
praktyką, lepiej używać lokalnych.
- LOCKEXT
- Domyślne rozszerzenie, które jest dodawane do plików
docelowych, aby określić, którego z lokalnych
plików blokujących użyć.
- LOCKSLEEP
- Liczba sekund, które procmail ma odespać przed drugą
próbą pliku blokującego (jeśli taki już
istniał); jeśli liczby nie podano, to wynosi ona 8 sekund.
- LOCKTIMEOUT
- Liczba sekund, które mijają od ostatniej modyfikacji pliku
blokującego, zanim procmail zdecyduje, że musi to być
błędnie pozostawiony plik blokujący, który
trzeba usunąć na siłę. Wartość
zero mówi, że nie ma czasu oczekiwania i że procmail
ma czekać do skutku. Jeśli nie jest podany, to odpowiada
1024 sekundom. Wartość ta jest przydatna w zapobieganiu
niezdefiniowanym zawieszeniom sendmaila/procmaila.
- TIMEOUT
- Ilość sekund, które muszą minąć
nim procmail zdecyduje, że dziecko, które uruchomił
musiało się zawiesić. Program odbierze od procmaila
sygnał TERMINATE, a przetwarzanie pliku rc pójdzie dalej.
Jeśli podano zero, to nie będzie tu używany czas
oczekiwania i procmail będzie czekać do skutku; jeśli
zmienna nie jest podana, wartość domyślna odpowiada
960 sekundom.
- MSGPREFIX
- Przedrostek nazwy pliku, który jest używany w wypadku
dostarczania do katalogu (nie używany w katalogach MH).
- HOST
- jeśli nie jest to nazwa hosta maszyny, przetwarzanie
bieżącego pliku rc zostaje przerywane. Jeśli w
linii komend podano inne pliki rc, to przetwarzanie będzie
kontynuowane z następnym z nich. Jeśli wykorzystane
zostaną wszystkie pliki rc, program zakończy pracę,
lecz nie wygeneruje błędu (np. mailer będzie
sądził, że wiadomość została
dostarczona).
- UMASK
- Nazwa mówi za siebie (jeśli nie, zapomnij o tym :-).
Wszystko przyznane zmiennej UMASK jest interpretowane jako
wartość ósemkowa. Jeśli nie jest
podana, umaska ma wartość 077. Jeśli umaska zezwala
na o+x, wszystkie mailboxy, do których procmail dostarcza
bezpośrednio, otrzymają zmianę trybu o+x. Może
to być używane do sprawdzania, czy przybyła nowa
poczta.
- SHELLMETAS
- Jeśli jakikolwiek ze znaków SHELLMETAS pojawi się w
linii określającej filtr lub program, to linia zostanie
przekazana $SHELL-owi, a nie zostanie wywołana bezpośrednio.
- SHELLFLAGS
- Każde wywołanie $SHELL-a będzie
następujące:
"$SHELL" "$SHELLFLAGS" "$*";
- SENDMAIL
- Jeśli nie używasz właściwości
forwardowania, nie martw się o to. Określa to program
wzywany do forwardowania poczty.
Jest wywoływany jako: "$SENDMAIL" "$@";
- NORESRETRY
- Ilość powtórek, które mają być
dokonane jeśli pojawi się błąd `process
table full', `file table full', `out of memory' lub
`out of swap space'. Jeśli liczba ta jest ujemna, procmail
będzie próbował wiecznie; jeśli nie jest
podana, odpowiada wartości 4. Powtórki zachodzą co
$SUSPEND sekund. Ideą, która kryje się za tym, jest
to, że jeśli np. wykorzystany został obszar
swap, lub wykorzystana jest tablica procesów,
to wiele innych programów wykryje to także i przerwie
działanie, lub 'padnie', zwalniając cenne zasoby
procmailowi.
- SUSPEND
- Liczba sekund, podczas których procmail będzie
pauzował jeśli musi czekać na coś, co obecnie
jest niedostępne (pamięć, fork, itd.); jeśli
nie podane, odpowiada 16 sekundom. Zobacz także: LOCKSLEEP.
- LINEBUF
- Długość wewnętrznych buforów liniowych,
nie może być mniejsza niż 128. Wszystkie linie
odczytywane z pliku rc nie powinny mieć więcej
niż $LINEBUF znaków przed i po rozszerzeniu. Jeśli
wartość nie jest podana, odpowiada 2048. Limit ten
oczywiście nie stosuje się do samego listu, który
może mieć określone długości linii, lub
może być plikiem binarnym.
- DELIVERED
- Jeśli ustawione na `yes', to procmail będzie udawał
przed agentem pocztowym, że poczta została dostarczona.
Jeśli poczta nie mogła być dostarczona, po napotkaniu
tego ustawienia zostanie utracona (nie będzie np. odbita).
- TRAP
- Gdy procmail będzie kończył działanie,
wywoła zawartość tej zmiennej. Kopia listu
może być odczytana ze stdin. Wszelkie wyjście
wyprodukowane przez tę komendę będzie dodane do pliku
$LOGFILE. Przykładowe zastosowania TRAP to: usuwanie plików
tymczasowych, logowanie własnych uzupełnień, itp.
Zobacz także EXITCODE i LOGABSTRACT.
- EXITCODE
- Gdy procmail kończy działanie, a zmienna ta została
ustawiona na dodatnią wartość numeryczną,
procmail użyje jej jako kodu wyjścia. Jeśli zmienna
ta jest ustawiona, lecz pusta, procmail ustawi kod wyjścia na
wartość zwracaną przez program TRAP.
Jeśli zmienna ta nie została ustawiona, procmail ustawi
ją na krótko przed wywołaniem programu TRAP .
- LASTFOLDER
- Zmienna ta jest inicjalizowana przez procmail za każdym razem, gdy
dostarcza coś jakiemuś folderowi lub programowi. Zawsze
zawiera ona nazwę ostatniego foldera (lub programu) do
którego coś dostarczano.
- MATCH
- Zmienna ta jest inicjalizowana przez procmail za każdym razem, gdy
ma on wyciągnąć tekst z wyrażenia regularnego.
Będzie zawierać cały tekst odpowiadającego
wyrażenia regularnego po żetonie `\/'.
- SHIFT
- Przyznanie dodatniej wartości dla tej zmiennej daje taki sam
rezultat, jak komenda `shift' w sh(1). Komenda ta jest najbardziej
użyteczna do wyciągania dodatkowych argumentów
podanych procmailowi, podczas gdy działa jako filtr pocztowy.
- INCLUDERC
- Nazywa plik rc (względny do bieżącego katalogu),
który powinien być włączony jako
część bieżącego pliku rc. Dozwolone
jest nieograniczone zagnieżdżanie.
- COMSAT
- Notyfikacja Comsat(8)/biff(1) domyślnie jest
włączona, lecz można ją
wyłączyć przez ustawienie tej zmiennej na `no'.
Alternatywnie, usługę biff można
dokonfigurować przez ustawienie zmiennej na `service@', `@hostname'
lub `sevice@hostname'. Nie podana wartość oznacza
przyjęcie biff@localhost.
- DROPPRIVS
- Jeśli jest to ustawione na `yes', procmail porzuci wszelkie
uprawnienia, jakie może mieć (suid lub sgid). Opcja ta jest
użyteczna, jeśli chcesz zagwarantować, że
dolna część pliku /etc/procmailrc jest
wywoływana w imieniu odbiorcy.
Rozszerzone wyrażenia regularne¶
Następujące żetony rozpoznawane są
zarówno przez wewnętrzny egrep procmaila, jak i przez
standardowy egrep(1):
- ^
- Początek linii.
- $
- Koniec linii.
- .
- Dowolny znak poza znakiem nowej linii.
- a*
- Dowolna sekwencja zero lub więcej a.
- a+
- Dowolna sekwencja jednego lub więcej a.
- a?
- Albo zero, albo jedno a.
- [^-a-d]
- Dowolny znak, który nie jest kreską, a, b, c, d, lub
znakiem nowej linii.
- de|abc
- Albo sekwencja `de', albo `abc'.
- (abc)*
- Zero lub więcej sekwencji `abc'.
Były to tylko przykłady, bardziej złożone kombinacje sa również dozwolone.
Następujące znaczenia żetonów
są znane tylko rozszerzeniom procmaila:
- ^ lub $
- Dopasuj nową linię (dla trafień wieloliniowych).
- ^^
- Zakotwicz wyrażenie na samym początku obszaru
przeszukiwania, lub jeśli napotkane na końcu
wyrażenia, na samym końcu obszaru przeszukiwań.
- \< lub \>
- Dopasuj znak przed, lub po słowie. Są to ogólnie
skróty dla `[^a-zA-Z0-9_]', lecz mogą także
dopasowywać znaki nowej linii. Ponieważ odpowiadają
rzeczywistym znakom, nadają się tylko do oddzielania
słów, nie do oddzielania przestrzeni
międzysłownej.
- \/
- Dzieli wyrażenie na dwie części. Wszystko
odpowiadające prawej stronie będzie przyznane zmiennej
środowiskowej MATCH.
PRZYKŁADY¶
Zajrzyj na stronę podręcznika procmailex(5).
ZASTRZEŻENIA¶
Kontynuowane linie w linii akcji, która określa program, muszą zawsze kończyć się lewym ukośnikiem, nawet jeśli podległa powłoka nie potrzebuje lub nie chce lewego ukośnika do wskazania kontynuacji. Jest tak z powodu dwustopniowego procesu przetwarzania (najpierw procmail, potem powłoka (lub nie, zależnie od SHELLMETAS)).
Nie wstawiaj komentarzy w regule w liniach warunkowych wyrażeń regularnych, linie te są przekazywane wewnętrznemu egrepowi wprost (z wyjątkiem lewych ukośników kontynuacji znajdujących się na końcu linii).
Początkowe białe spacje w kontynuowanych wyrażeniach regularnych są zazwyczaj ignorowane (więc mogą być wstawiane), lecz nie jest tak w kontynuowanych wyrażeniach warunkowych, które są odczytywane według reguł podstawiania sh(1) wewnątrz podwójnych cytatów.
Uważaj na deadlocki podczas wykonywania niezdrowych rzeczy jak forwardowanie poczty na swoje własne konto. Deadlocki można złamać przez właściwe użycie LOCKTIMEOUT.
Wszelkie domyślne wartości, których procmail używa dla zmiennych środowiskowych zawsze przeciążą te, które były wcześniej zdefiniowane. Jeśli naprawdę chcesz przeciążyć wartości domyślne, wstaw je albo do pliku rc, albo wypisz w linii poleceń jako argumenty.
Zmienne środowiskowe, ustawiane wewnątrz interpretowanej-przez-powłokę-`|' części akcji reguły nie zachowają ich wartości po zakończeniu reguły, gdyż są one ustawiane w podpowłoce procmaila. Aby upewnić się, że wartość zostanie zachowana, musisz dokonać przyznania przed początkowym `|' reguły, tak że może przechwycić stdout programu.
Jeśli w regule dostarczającej podasz tylko
flagę `h' lub `b' i reguła ta zostanie dopasowana, to
jeżeli nie użyłeś flagi `c', ciało listu
lub (odpowiednio) jego nagłówek zostaną utracone.
ZOBACZ TAKŻE¶
procmail(1), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1), mailx(1), binmail(1), uucp(1), aliases(5), sendmail(8), egrep(1), grep(1), biff(1), comsat(8), lockfile(1), formail(1)
BŁĘDY¶
Jedyne podstawienia zmiennych środowiskowych, które mogą być obsługiwane przez samego procmaila są typu $nazwa, ${nazwa}, ${nazwa:-tekst}, ${nazwa:+tekst}, ${nazwa-tekst}, ${nazwa+tekst}, $#, $n, $$, $?, $_, $- i $=; gdzie $_ będzie podmieniane nazwą bieżącego pliku rc, $- przez $LASTFOLDER, a $= będzie zawierać punktację (score) ostatniej reguły. Gdy użyte są opcje -a lub -m to "$@" rozwinie się do kolejno podanego argumentu (listy); lecz tylko jeśli przekazany jako lista argumentów do programu (?)
Procmail nie wspiera rozwijania `~'.
Do przetwarzania pliku rc używany jest bufor liniowy długości $LINEBUF i wszelkie rozwinięcia muszą zmieścić się w tym limicie. W przeciwnym wypadku zachowanie jest niezdefiniowane.
Jeśli globalny plik blokujący ma ścieżkę relatywną a bieżący katalog nie jest taki sam jak na początku, to lokalny plik blokujący nie zostanie usunięty jeśli procmail zakończy w tym momencie działanie (tak więc: używaj dla globalnych plików blokujących ścieżek absolutnych).
Lokalny plik blokujące reguły, który zaznacza początek zagnieżdżonego bloku nie działa jak by się tego oczekiwało.
Gdy przechwytuje się stdinu z reguły do zmiennej
środowiskowej, jeden, kończący znak nowej linii
zostanie obcięty.
ROŻNE¶
Jeśli wyrażenie regularne zawiera `^TO', to zostanie to podmienione przez `(^((Original-)?(Resent-)?(To |Cc |Bcc) |(X-Envelope |Apparently(-Resent)?)-To) :(.*[^a-zA-Z])?)', co powinno złapać wszystkie specyfikacje celu.
Jeśli wyrażenie regularne zawiera`^FROM_DAEMON' to zostanie przez `(^(Precedence :.*(junk |bulk |list) |(((Resent-)?(From |Sender) |X-Envelope-From) : |>?From )(.*[^(.%@a-z0-9])?(Post(ma?(st(e?r)? |n) |office) |(send)?Mail(er)? |daemon |mmdf |root |n?uucp |smtp |response |LISTSERV |owner |request |bounce |serv(ices? |er) |Admin(istrator)?)([^).! :a-z0-9].*)?$[^>]))', co powinno wyłapać listy pochodzące od większości demonów (fajne wyrażenie regularne? :-).
Jeśli wyrażenie regularne zawiera `^FROM_MAILER' to zostanie podmienione przez `(^(((Resent-)?(From |Sender) |X-Envelope-From) : |>?From )(.*[^(.%@a-z0-9])?(Post(ma(st(er)? |n) |office) |(send)?Mail(er)? |daemon |mmdf |root |n?uucp |smtp |response |serv(ices? |er) |Admin(istrator)?)([^).! :a-z0-9].*)?$[^>])' (obcięta wersja `^FROM_DAEMON'), co powinno wyłapać listy pochodzące od większości demonów-mailerowych.
Podczas przypisywania wartości logicznych zmiennym takim jak VERBOSE, DELIVERED czy COMSAT, procmail przyjmuje jako prawdziwy napis zaczynający się od: niezerowej wartości, `on', `y', `t' lub `e'. Fałsz jest każdym napisem zaczynającym się od wartości zero, `off', `n', `f' lub `d'.
Jeśli linia akcji reguły określa program, to
pojedyncza para odwrotnyukośnik-nowalinia w niej
występująca, na pustej linii zostanie przekształcona w
nową linię.
UWAGI¶
Ponieważ niecytowane początkowe białe spacje są ogólnie ignorowane w plikach rc, możesz sobie wszystko powcinać według uznania.
Prowadzące `|' linii akcji, wskazujące program lub filtr, jest obcinane przed sprawdzeniem $SHELLMETAS
Pliki włączane dyrektywą INCLUDERC zawierające tylko przyznania wartości zmiennym środowiskowym mogą być dzielone z sh.
naprawdę skomplikowanego przetwarzania możesz nawet rozważyć rekurencyjne wywoływanie procmaila.
AUTOR¶
Stephen R. van den Berg w RWTH-Aachen, Germany
2003/03/15 | BuGless |